<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
    <title>Reference</title>
    <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head>
<body>

<div id="container">

<div id="product">
	<div id="product_logo"></div>
	<div id="product_name"><big><b></b></big></div>
	<div id="product_description"></div>
</div> <!-- id="product" -->


<div id="main">


<!-- Menu -->

<div id="navigation">
<br/>
<h1>Duplex</h1>

<ul>
  <li><a href="../index.html">Index</a></li>
</ul>

<h2>Contents</h2>
<ul>
<li><a href="#Functions">Functions</a></li>
<li><a href="#Fields">Fields</a></li>
</ul>


<h2>Modules</h2>
<ul class="$(kind=='Topics' and '' or 'nowrap'">
  <li><a href="../modules/Duplex.Application.html">Duplex.Application</a></li>
  <li><a href="../modules/Duplex.Applications.Effect.html">Duplex.Applications.Effect</a></li>
  <li><a href="../modules/Duplex.Applications.GridPie.html">Duplex.Applications.GridPie</a></li>
  <li><a href="../modules/Duplex.Applications.Hydra.html">Duplex.Applications.Hydra</a></li>
  <li><a href="../modules/Duplex.Applications.Instrument.html">Duplex.Applications.Instrument</a></li>
  <li><a href="../modules/Duplex.Applications.Keyboard.GridLayout.html">Duplex.Applications.Keyboard.GridLayout</a></li>
  <li><a href="../modules/Duplex.Applications.Keyboard.Layouts.HarmonicLayout.html">Duplex.Applications.Keyboard.Layouts.HarmonicLayout</a></li>
  <li><a href="../modules/Duplex.Applications.Keyboard.Layouts.IsomorphicLayout.html">Duplex.Applications.Keyboard.Layouts.IsomorphicLayout</a></li>
  <li><a href="../modules/Duplex.Applications.Keyboard.Layouts.PianoLayout.html">Duplex.Applications.Keyboard.Layouts.PianoLayout</a></li>
  <li><a href="../modules/Duplex.Applications.Keyboard.html">Duplex.Applications.Keyboard</a></li>
  <li><a href="../modules/Duplex.Applications.Matrix.html">Duplex.Applications.Matrix</a></li>
  <li><a href="../modules/Duplex.Applications.Metronome.html">Duplex.Applications.Metronome</a></li>
  <li><a href="../modules/Duplex.Applications.MidiActions.Bindings.html">Duplex.Applications.MidiActions.Bindings</a></li>
  <li><a href="../modules/Duplex.Applications.MidiActions.html">Duplex.Applications.MidiActions</a></li>
  <li><a href="../modules/Duplex.Applications.Mixer.html">Duplex.Applications.Mixer</a></li>
  <li><a href="../modules/Duplex.Applications.Mlrx.Mlrx_group.html">Duplex.Applications.Mlrx.Mlrx_group</a></li>
  <li><a href="../modules/Duplex.Applications.Mlrx.Mlrx_note.html">Duplex.Applications.Mlrx.Mlrx_note</a></li>
  <li><a href="../modules/Duplex.Applications.Mlrx.Mlrx_pos.html">Duplex.Applications.Mlrx.Mlrx_pos</a></li>
  <li><a href="../modules/Duplex.Applications.Mlrx.Mlrx_track.html">Duplex.Applications.Mlrx.Mlrx_track</a></li>
  <li><a href="../modules/Duplex.Applications.Mlrx.html">Duplex.Applications.Mlrx</a></li>
  <li><a href="../modules/Duplex.Applications.Navigator.html">Duplex.Applications.Navigator</a></li>
  <li><a href="../modules/Duplex.Applications.NotesOnWheels.html">Duplex.Applications.NotesOnWheels</a></li>
  <li><a href="../modules/Duplex.Applications.PatternCursor.html">Duplex.Applications.PatternCursor</a></li>
  <li><a href="../modules/Duplex.Applications.PatternSequence.html">Duplex.Applications.PatternSequence</a></li>
  <li><a href="../modules/Duplex.Applications.Recorder.html">Duplex.Applications.Recorder</a></li>
  <li><a href="../modules/Duplex.Applications.Repeater.html">Duplex.Applications.Repeater</a></li>
  <li><a href="../modules/Duplex.Applications.Rotate.html">Duplex.Applications.Rotate</a></li>
  <li><a href="../modules/Duplex.Applications.StepSequencer.html">Duplex.Applications.StepSequencer</a></li>
  <li><a href="../modules/Duplex.Applications.SwitchConfiguration.html">Duplex.Applications.SwitchConfiguration</a></li>
  <li><a href="../modules/Duplex.Applications.TestPad.html">Duplex.Applications.TestPad</a></li>
  <li><a href="../modules/Duplex.Applications.TrackSelector.html">Duplex.Applications.TrackSelector</a></li>
  <li><a href="../modules/Duplex.Applications.Transport.html">Duplex.Applications.Transport</a></li>
  <li><a href="../modules/Duplex.Applications.UIButtonTest.html">Duplex.Applications.UIButtonTest</a></li>
  <li><a href="../modules/Duplex.Applications.XYPad.html">Duplex.Applications.XYPad</a></li>
  <li><a href="../modules/Duplex.Automation.html">Duplex.Automation</a></li>
  <li><strong>Duplex.Browser</strong></li>
  <li><a href="../modules/Duplex.BrowserProcess.html">Duplex.BrowserProcess</a></li>
  <li><a href="../modules/Duplex.Canvas.html">Duplex.Canvas</a></li>
  <li><a href="../modules/Duplex.CanvasPoint.html">Duplex.CanvasPoint</a></li>
  <li><a href="../modules/Duplex.ControlMap.html">Duplex.ControlMap</a></li>
  <li><a href="../modules/Duplex.Device.html">Duplex.Device</a></li>
  <li><a href="../modules/Duplex.Display.html">Duplex.Display</a></li>
  <li><a href="../modules/Duplex.Globals.html">Duplex.Globals</a></li>
  <li><a href="../modules/Duplex.Message.html">Duplex.Message</a></li>
  <li><a href="../modules/Duplex.MessageStream.html">Duplex.MessageStream</a></li>
  <li><a href="../modules/Duplex.MidiDevice.html">Duplex.MidiDevice</a></li>
  <li><a href="../modules/Duplex.OscClient.html">Duplex.OscClient</a></li>
  <li><a href="../modules/Duplex.OscDevice.html">Duplex.OscDevice</a></li>
  <li><a href="../modules/Duplex.OscVoiceMgr.html">Duplex.OscVoiceMgr</a></li>
  <li><a href="../modules/Duplex.Preferences.html">Duplex.Preferences</a></li>
  <li><a href="../modules/Duplex.ProcessSlicer.html">Duplex.ProcessSlicer</a></li>
  <li><a href="../modules/Duplex.RoamingDSP.html">Duplex.RoamingDSP</a></li>
  <li><a href="../modules/Duplex.Scheduler.html">Duplex.Scheduler</a></li>
  <li><a href="../modules/Duplex.StateController.html">Duplex.StateController</a></li>
  <li><a href="../modules/Duplex.UIButton.html">Duplex.UIButton</a></li>
  <li><a href="../modules/Duplex.UIButtonStrip.html">Duplex.UIButtonStrip</a></li>
  <li><a href="../modules/Duplex.UIComponent.html">Duplex.UIComponent</a></li>
  <li><a href="../modules/Duplex.UIKey.html">Duplex.UIKey</a></li>
  <li><a href="../modules/Duplex.UIKeyPressure.html">Duplex.UIKeyPressure</a></li>
  <li><a href="../modules/Duplex.UILabel.html">Duplex.UILabel</a></li>
  <li><a href="../modules/Duplex.UIPad.html">Duplex.UIPad</a></li>
  <li><a href="../modules/Duplex.UIPitchBend.html">Duplex.UIPitchBend</a></li>
  <li><a href="../modules/Duplex.UISlider.html">Duplex.UISlider</a></li>
  <li><a href="../modules/Duplex.UISpinner.html">Duplex.UISpinner</a></li>
  <li><a href="../modules/Duplex.WidgetHooks.html">Duplex.WidgetHooks</a></li>
  <li><a href="../modules/Duplex.WidgetKeyboard.html">Duplex.WidgetKeyboard</a></li>
  <li><a href="../modules/Duplex.html">Duplex</a></li>
  <li><a href="../modules/main.html">main</a></li>
</ul>

</div>

<div id="content">

<h1>Module <code>Duplex.Browser</code></h1>
<p>The Browser class shows and instantiates registered device configurations and shows the virtual UI for them.</p>
<p>
<p> More than one configuration can be active and running for multiple devices.</p>

<h3>Changes</h3>

<p>  0.99.4</p>
<pre><code>- Decorate open device dialogs when hardware is hot-swapped
- Prevent notifier feedback
</code></pre>

<p>  0.99.1</p>
<pre><code>- Button to show/hide virtual control surface (access with TAB key)
</code></pre>

<p>  0.98.28</p>
<pre><code>- Expanded set of key/MIDI mappings
  - [Next] / [Previous] configuration for the selected device
  - [Set] the active configuration for the selected device
  - [Show] / [Hide] the Duplex browser dialog
</code></pre>

<p>  0.98.14</p>
<pre><code>- Tool menu: devices organized into sub-menu’s
- Tool menu: display on startup (only when active config)
- Tool menu: release all devices (useful shortcut)
- Tool menu: enable NRPN support
</code></pre>

<p>  0.96</p>
<pre><code>- Interactively change options while applications are running
  - Application:_apply_options() and optional on_activate() has been removed
- Fixed: hot-plugging devices caused an error (bug was introduced in 0.95)
- More MIDI-mapping options: set,select previous/next configuration
</code></pre>

<p>  0.95</p>
<pre><code>- Refactoring: moved the "settings" dialog into the Browser class, as the
  dialog will eventually contain application settings etc. The device now
  only contains the device-specific UI code, and not the dialog itself
</code></pre>

<p>  0.93</p>
<pre><code>- Switch between device presets/configurations using function keys
- Forward keypresses to Renoise (except those we use for switching)
</code></pre>

</p>


<h2><a href="#Functions">Functions</a></h2>
<table class="function_list">
	<tr>
	<td class="name" nowrap><a href="#__init">__init (initial_configuration, start_configuration)</a></td>
	<td class="summary">Initialize the Browser class</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#show">show ()</a></td>
	<td class="summary">Activate and shows the dialog, or bring the existing one to front</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#hide">hide ()</a></td>
	<td class="summary">Hide the dialog</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#on_idle">on_idle ()</a></td>
	<td class="summary">Forward idle notifications to all active processes</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#on_new_document">on_new_document ()</a></td>
	<td class="summary">Forward new document notifications to all active processes</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#on_release_document">on_release_document ()</a></td>
	<td class="summary">Forward released document notifications to all active processes</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#on_window_became_active">on_window_became_active ()</a></td>
	<td class="summary">Forward notifications to all active processes</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#on_window_resigned_active">on_window_resigned_active ()</a></td>
	<td class="summary">Forward notifications to all active processes</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#available_devices">available_devices ()</a></td>
	<td class="summary">Return a list of valid devices (plus a "None" option)
 existing devices (ones that we found MIDI ports for) are listed first,
 all others are listed as (N/A) to indicate that they are not present
 in the users device setup</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#set_device">set_device (device_display_name, configuration_hint)</a></td>
	<td class="summary">Change the active input device:
 instantiates a new device, using the first avilable configuration for it,
 or reusing an already running configuration</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#available_configurations">available_configurations (device_name)</a></td>
	<td class="summary">Return list of valid configurations for the given device</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#configuration_running">configuration_running (configuration)</a></td>
	<td class="summary">Determine if the given config is instantiated and running</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#set_previous_configuration">set_previous_configuration ()</a></td>
	<td class="summary">Activate the previous configuration (if active, has previous)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#has_previous_configuration">has_previous_configuration ()</a></td>
	<td class="summary">Check if previous configuration exist</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#set_next_configuration">set_next_configuration ()</a></td>
	<td class="summary">Activate the next configuration (if active, has next)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#has_next_configuration">has_next_configuration ()</a></td>
	<td class="summary">Check if next configuration exist</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#goto_configuration">goto_configuration (idx)</a></td>
	<td class="summary">Activate a configuration based on the provided index <br/>
 (silently fails if no configuration exist at that index, or already active)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#get_configuration_index">get_configuration_index (cfg_name)</a></td>
	<td class="summary">Retrieve the index for the configuration matching the provided name</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#set_configuration">set_configuration (configuration, start_running)</a></td>
	<td class="summary">Activate a new configuration for the currently active device</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#start_current_configuration">start_current_configuration (start_running, from_ui)</a></td>
	<td class="summary">Start current configuration (and all apps within it)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#stop_current_configuration">stop_current_configuration (from_ui)</a></td>
	<td class="summary">Stop current configuration (and all apps within it)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#dump_midi">dump_midi ()</a></td>
	<td class="summary">Check if we should write debug data to the std out (console)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#dump_osc">dump_osc ()</a></td>
	<td class="summary">Check if we should write debug data to the std out (console)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#set_dump_midi">set_dump_midi (dump)</a></td>
	<td class="summary">Set the MIDI dump status</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#set_dump_osc">set_dump_osc (dump)</a></td>
	<td class="summary">Set the OSC dump status</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_strip_postfixes">_strip_postfixes (name)</a></td>
	<td class="summary">Remove NOT<em>AVAILABLE</em>POSTFIX and RUNNING_POSTFIX from the passed name</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_process_running">_process_running ()</a></td>
	<td class="summary">Check if any processes are running</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_current_process">_current_process ()</a></td>
	<td class="summary">Retrieve the current process</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_device_index_by_name">_device_index_by_name (device_display_name)</a></td>
	<td class="summary">Retrieve index of the given device display name</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_configuration_index_by_name">_configuration_index_by_name (config_name)</a></td>
	<td class="summary">Retrieve index of the given configuration name</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_available_configurations_for_device">_available_configurations_for_device (device_display_name)</a></td>
	<td class="summary">Retrieve list of configurations present for the provided device</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_available_configuration_names_for_device">_available_configuration_names_for_device (device_display_name)</a></td>
	<td class="summary">Retrieve list of configuration-names present for the provided device</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_decorate_device_list">_decorate_device_list ()</a></td>
	<td class="summary">Add/remove the "running" postfix for relevant devices.</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_decorate_configuration_list">_decorate_configuration_list ()</a></td>
	<td class="summary">Add/remove the "running" postfix for relevant configurations.</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#toggle_browser_size">toggle_browser_size ()</a></td>
	<td class="summary">Show/hide the virtual control surface</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_update_resize_button">_update_resize_button ()</a></td>
	<td class="summary">Update dialog after virtual control surface is shown/hidden</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_update_device_description">_update_device_description ()</a></td>
	<td class="summary">Show info about the current device, as specified in the control-map</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_configuration_autostart_enabled">_configuration_autostart_enabled ()</a></td>
	<td class="summary">Check whether the current configuration should be autostarted
 return (bool)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_enable_configuration_autostart">_enable_configuration_autostart ()</a></td>
	<td class="summary">Add the current configuration to the autostart prefs</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_disable_configuration_autostart">_disable_configuration_autostart ()</a></td>
	<td class="summary">Remove the current configuration from the autostart prefs</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_available_device_ports_changed">_available_device_ports_changed ()</a></td>
	<td class="summary">Notifier, fired when device input or output port setting changed</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_device_ports_changed">_device_ports_changed ()</a></td>
	<td class="summary">Notifier, fired when device input or output port setting changed</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_create_content_view">_create_content_view ()</a></td>
	<td class="summary">Build and assign the application dialog</td>
	</tr>
</table>
<h2><a href="#Fields">Fields</a></h2>
<table class="function_list">
	<tr>
	<td class="name" nowrap><a href="#self._available_configurations">self._available_configurations</a></td>
	<td class="summary">(table) list of duplex device configuration definitions</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._processes">self._processes</a></td>
	<td class="summary">(table) a table containing BrowserProcess processes</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._device_name">self._device_name</a></td>
	<td class="summary">(string) selected device display-name</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._configuration_name">self._configuration_name</a></td>
	<td class="summary">(string) selected configuration for the current device</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._dump_midi">self._dump_midi</a></td>
	<td class="summary">(bool) dump midi information to console (debug option)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._dump_osc">self._dump_osc</a></td>
	<td class="summary">(bool) dump osc information to console (debug option)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._suppress_notifiers">self._suppress_notifiers</a></td>
	<td class="summary">(bool) true while updating the GUI from within the internal browser functions,
 to avoid doubling updates when the changes are not fired from the GUI</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._requested_device">self._requested_device</a></td>
	<td class="summary">(string) set when we temporarily have selected "None" as device,
 and want to revert the list choice</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._osc_client">self._osc_client</a></td>
	<td class="summary">(<a href="../modules/Duplex.OscClient.html#">Duplex.OscClient</a>) takes care of sending internally routed notes
 to Renoise (not created if host/port is not defined)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._voice_mgr">self._voice_mgr</a></td>
	<td class="summary">(<a href="../modules/Duplex.OscVoiceMgr.html#">Duplex.OscVoiceMgr</a>) the voice manager is handling triggered note messages
 (needs the osc_client)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._vb">self._vb</a></td>
	<td class="summary">(renoise.ViewBuilder) viewbuilder for all our views</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._dialog">self._dialog</a></td>
	<td class="summary">(renoise.Dialog) referenc to the main dialog</td>
	</tr>
</table>

<br/>
<br/>


    <h2><a name="Functions"></a>Functions</h2>
    <dl class="function">
    <dt>
    <a name = "__init"></a>
    <strong>__init (initial_configuration, start_configuration)</strong>
    </dt>
    <dd>
    Initialize the Browser class


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">initial_configuration</span>
         (Table) set to this configuration
        </li>
        <li><span class="parameter">start_configuration</span>
         (bool) true to start the application
        </li>
    </ul>





</dd>
    <dt>
    <a name = "show"></a>
    <strong>show ()</strong>
    </dt>
    <dd>
    Activate and shows the dialog, or bring the existing one to front







</dd>
    <dt>
    <a name = "hide"></a>
    <strong>hide ()</strong>
    </dt>
    <dd>
    Hide the dialog







</dd>
    <dt>
    <a name = "on_idle"></a>
    <strong>on_idle ()</strong>
    </dt>
    <dd>
    Forward idle notifications to all active processes







</dd>
    <dt>
    <a name = "on_new_document"></a>
    <strong>on_new_document ()</strong>
    </dt>
    <dd>
    Forward new document notifications to all active processes







</dd>
    <dt>
    <a name = "on_release_document"></a>
    <strong>on_release_document ()</strong>
    </dt>
    <dd>
    Forward released document notifications to all active processes







</dd>
    <dt>
    <a name = "on_window_became_active"></a>
    <strong>on_window_became_active ()</strong>
    </dt>
    <dd>
    Forward notifications to all active processes







</dd>
    <dt>
    <a name = "on_window_resigned_active"></a>
    <strong>on_window_resigned_active ()</strong>
    </dt>
    <dd>
    Forward notifications to all active processes







</dd>
    <dt>
    <a name = "available_devices"></a>
    <strong>available_devices ()</strong>
    </dt>
    <dd>
    Return a list of valid devices (plus a "None" option)
 existing devices (ones that we found MIDI ports for) are listed first,
 all others are listed as (N/A) to indicate that they are not present
 in the users device setup



    <h3>Returns:</h3>
    <ol>

        (Table) list of device names
    </ol>




</dd>
    <dt>
    <a name = "set_device"></a>
    <strong>set_device (device_display_name, configuration_hint)</strong>
    </dt>
    <dd>
    Change the active input device:
 instantiates a new device, using the first avilable configuration for it,
 or reusing an already running configuration


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">device_display_name</span>
         (string) device display-name, without postfix
        </li>
        <li><span class="parameter">configuration_hint</span>
         (optional table) configuration that should be
 used to instantiate the device. when nil, a default one is selected from the
 available device configs
        </li>
    </ul>





</dd>
    <dt>
    <a name = "available_configurations"></a>
    <strong>available_configurations (device_name)</strong>
    </dt>
    <dd>
    Return list of valid configurations for the given device


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">device_name</span>
         (String) the device name
        </li>
    </ul>





</dd>
    <dt>
    <a name = "configuration_running"></a>
    <strong>configuration_running (configuration)</strong>
    </dt>
    <dd>
    Determine if the given config is instantiated and running


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">configuration</span>
         (Table) the configuration to check
        </li>
    </ul>

    <h3>Returns:</h3>
    <ol>

        (bool) true if config is running
    </ol>




</dd>
    <dt>
    <a name = "set_previous_configuration"></a>
    <strong>set_previous_configuration ()</strong>
    </dt>
    <dd>
    Activate the previous configuration (if active, has previous)







</dd>
    <dt>
    <a name = "has_previous_configuration"></a>
    <strong>has_previous_configuration ()</strong>
    </dt>
    <dd>
    Check if previous configuration exist



    <h3>Returns:</h3>
    <ol>

        (bool)
    </ol>




</dd>
    <dt>
    <a name = "set_next_configuration"></a>
    <strong>set_next_configuration ()</strong>
    </dt>
    <dd>
    Activate the next configuration (if active, has next)







</dd>
    <dt>
    <a name = "has_next_configuration"></a>
    <strong>has_next_configuration ()</strong>
    </dt>
    <dd>
    Check if next configuration exist



    <h3>Returns:</h3>
    <ol>

        (bool)
    </ol>




</dd>
    <dt>
    <a name = "goto_configuration"></a>
    <strong>goto_configuration (idx)</strong>
    </dt>
    <dd>
    Activate a configuration based on the provided index <br/>
 (silently fails if no configuration exist at that index, or already active)


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">idx</span>
         (int)
        </li>
    </ul>





</dd>
    <dt>
    <a name = "get_configuration_index"></a>
    <strong>get_configuration_index (cfg_name)</strong>
    </dt>
    <dd>
    Retrieve the index for the configuration matching the provided name


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">cfg_name</span>



        </li>
    </ul>

    <h3>Returns:</h3>
    <ol>

        int or nil
    </ol>




</dd>
    <dt>
    <a name = "set_configuration"></a>
    <strong>set_configuration (configuration, start_running)</strong>
    </dt>
    <dd>
    Activate a new configuration for the currently active device


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">configuration</span>
         (Table)
        </li>
        <li><span class="parameter">start_running</span>
         (bool)
        </li>
    </ul>





</dd>
    <dt>
    <a name = "start_current_configuration"></a>
    <strong>start_current_configuration (start_running, from_ui)</strong>
    </dt>
    <dd>
    Start current configuration (and all apps within it)


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">start_running</span>



        </li>
        <li><span class="parameter">from_ui</span>



        </li>
    </ul>





</dd>
    <dt>
    <a name = "stop_current_configuration"></a>
    <strong>stop_current_configuration (from_ui)</strong>
    </dt>
    <dd>
    Stop current configuration (and all apps within it)


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">from_ui</span>



        </li>
    </ul>





</dd>
    <dt>
    <a name = "dump_midi"></a>
    <strong>dump_midi ()</strong>
    </dt>
    <dd>
    Check if we should write debug data to the std out (console)



    <h3>Returns:</h3>
    <ol>

        (bool)
    </ol>




</dd>
    <dt>
    <a name = "dump_osc"></a>
    <strong>dump_osc ()</strong>
    </dt>
    <dd>
    Check if we should write debug data to the std out (console)



    <h3>Returns:</h3>
    <ol>

        (bool)
    </ol>




</dd>
    <dt>
    <a name = "set_dump_midi"></a>
    <strong>set_dump_midi (dump)</strong>
    </dt>
    <dd>
    Set the MIDI dump status


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">dump</span>
         (bool)
        </li>
    </ul>





</dd>
    <dt>
    <a name = "set_dump_osc"></a>
    <strong>set_dump_osc (dump)</strong>
    </dt>
    <dd>
    Set the OSC dump status


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">dump</span>
         (bool)
        </li>
    </ul>





</dd>
    <dt>
    <a name = "_strip_postfixes"></a>
    <strong>_strip_postfixes (name)</strong>
    </dt>
    <dd>
    Remove NOT<em>AVAILABLE</em>POSTFIX and RUNNING_POSTFIX from the passed name


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">name</span>
         (String)
        </li>
    </ul>

    <h3>Returns:</h3>
    <ol>

        (String) the name without decoration
    </ol>




</dd>
    <dt>
    <a name = "_process_running"></a>
    <strong>_process_running ()</strong>
    </dt>
    <dd>
    Check if any processes are running



    <h3>Returns:</h3>
    <ol>

        (bool) true when at least one process is instantiated and running
    </ol>




</dd>
    <dt>
    <a name = "_current_process"></a>
    <strong>_current_process ()</strong>
    </dt>
    <dd>
    Retrieve the current process



    <h3>Returns:</h3>
    <ol>

        (BrowserProcess object or nil)
    </ol>




</dd>
    <dt>
    <a name = "_device_index_by_name"></a>
    <strong>_device_index_by_name (device_display_name)</strong>
    </dt>
    <dd>
    Retrieve index of the given device display name


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">device_display_name</span>
         (string)
        </li>
    </ul>

    <h3>Returns:</h3>
    <ol>

        (int or nil)
    </ol>




</dd>
    <dt>
    <a name = "_configuration_index_by_name"></a>
    <strong>_configuration_index_by_name (config_name)</strong>
    </dt>
    <dd>
    Retrieve index of the given configuration name


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">config_name</span>
         (string)
        </li>
    </ul>

    <h3>Returns:</h3>
    <ol>

        (int or nil)
    </ol>




</dd>
    <dt>
    <a name = "_available_configurations_for_device"></a>
    <strong>_available_configurations_for_device (device_display_name)</strong>
    </dt>
    <dd>
    Retrieve list of configurations present for the provided device


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">device_display_name</span>
         (String) device display-name
        </li>
    </ul>

    <h3>Returns:</h3>
    <ol>

        (Table) list of configurations
    </ol>




</dd>
    <dt>
    <a name = "_available_configuration_names_for_device"></a>
    <strong>_available_configuration_names_for_device (device_display_name)</strong>
    </dt>
    <dd>
    Retrieve list of configuration-names present for the provided device


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">device_display_name</span>
         (String) device display-name
        </li>
    </ul>

    <h3>Returns:</h3>
    <ol>

        (Table) list of configuration names
    </ol>




</dd>
    <dt>
    <a name = "_decorate_device_list"></a>
    <strong>_decorate_device_list ()</strong>
    </dt>
    <dd>
    Add/remove the "running" postfix for relevant devices.
 called when we start/stop apps, and choose a device/config







</dd>
    <dt>
    <a name = "_decorate_configuration_list"></a>
    <strong>_decorate_configuration_list ()</strong>
    </dt>
    <dd>
    Add/remove the "running" postfix for relevant configurations.
 called when we start/stop apps, and choose a device/config







</dd>
    <dt>
    <a name = "toggle_browser_size"></a>
    <strong>toggle_browser_size ()</strong>
    </dt>
    <dd>
    Show/hide the virtual control surface







</dd>
    <dt>
    <a name = "_update_resize_button"></a>
    <strong>_update_resize_button ()</strong>
    </dt>
    <dd>
    Update dialog after virtual control surface is shown/hidden







</dd>
    <dt>
    <a name = "_update_device_description"></a>
    <strong>_update_device_description ()</strong>
    </dt>
    <dd>
    Show info about the current device, as specified in the control-map







</dd>
    <dt>
    <a name = "_configuration_autostart_enabled"></a>
    <strong>_configuration_autostart_enabled ()</strong>
    </dt>
    <dd>
    Check whether the current configuration should be autostarted
 return (bool)







</dd>
    <dt>
    <a name = "_enable_configuration_autostart"></a>
    <strong>_enable_configuration_autostart ()</strong>
    </dt>
    <dd>
    Add the current configuration to the autostart prefs







</dd>
    <dt>
    <a name = "_disable_configuration_autostart"></a>
    <strong>_disable_configuration_autostart ()</strong>
    </dt>
    <dd>
    Remove the current configuration from the autostart prefs







</dd>
    <dt>
    <a name = "_available_device_ports_changed"></a>
    <strong>_available_device_ports_changed ()</strong>
    </dt>
    <dd>
    Notifier, fired when device input or output port setting changed







</dd>
    <dt>
    <a name = "_device_ports_changed"></a>
    <strong>_device_ports_changed ()</strong>
    </dt>
    <dd>
    Notifier, fired when device input or output port setting changed







</dd>
    <dt>
    <a name = "_create_content_view"></a>
    <strong>_create_content_view ()</strong>
    </dt>
    <dd>
    Build and assign the application dialog







</dd>
</dl>
    <h2><a name="Fields"></a>Fields</h2>
    <dl class="function">
    <dt>
    <a name = "self._available_configurations"></a>
    <strong>self._available_configurations</strong>
    </dt>
    <dd>
    (table) list of duplex device configuration definitions





    <h3>See also:</h3>
    <ul>
         <a href="../modules/Duplex.Preferences.html#">Duplex.Preferences</a>
    </ul>


</dd>
    <dt>
    <a name = "self._processes"></a>
    <strong>self._processes</strong>
    </dt>
    <dd>
    (table) a table containing BrowserProcess processes







</dd>
    <dt>
    <a name = "self._device_name"></a>
    <strong>self._device_name</strong>
    </dt>
    <dd>
    (string) selected device display-name







</dd>
    <dt>
    <a name = "self._configuration_name"></a>
    <strong>self._configuration_name</strong>
    </dt>
    <dd>
    (string) selected configuration for the current device







</dd>
    <dt>
    <a name = "self._dump_midi"></a>
    <strong>self._dump_midi</strong>
    </dt>
    <dd>
    (bool) dump midi information to console (debug option)







</dd>
    <dt>
    <a name = "self._dump_osc"></a>
    <strong>self._dump_osc</strong>
    </dt>
    <dd>
    (bool) dump osc information to console (debug option)







</dd>
    <dt>
    <a name = "self._suppress_notifiers"></a>
    <strong>self._suppress_notifiers</strong>
    </dt>
    <dd>
    (bool) true while updating the GUI from within the internal browser functions,
 to avoid doubling updates when the changes are not fired from the GUI







</dd>
    <dt>
    <a name = "self._requested_device"></a>
    <strong>self._requested_device</strong>
    </dt>
    <dd>
    (string) set when we temporarily have selected "None" as device,
 and want to revert the list choice







</dd>
    <dt>
    <a name = "self._osc_client"></a>
    <strong>self._osc_client</strong>
    </dt>
    <dd>
    (<a href="../modules/Duplex.OscClient.html#">Duplex.OscClient</a>) takes care of sending internally routed notes
 to Renoise (not created if host/port is not defined)







</dd>
    <dt>
    <a name = "self._voice_mgr"></a>
    <strong>self._voice_mgr</strong>
    </dt>
    <dd>
    (<a href="../modules/Duplex.OscVoiceMgr.html#">Duplex.OscVoiceMgr</a>) the voice manager is handling triggered note messages
 (needs the osc_client)







</dd>
    <dt>
    <a name = "self._vb"></a>
    <strong>self._vb</strong>
    </dt>
    <dd>
    (renoise.ViewBuilder) viewbuilder for all our views







</dd>
    <dt>
    <a name = "self._dialog"></a>
    <strong>self._dialog</strong>
    </dt>
    <dd>
    (renoise.Dialog) referenc to the main dialog







</dd>
</dl>


</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.2</a></i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>
